In [1]:
%reload_ext autotime
import pandas as pd
import plotly.express as px
import numpy as np
from scipy.optimize import curve_fit
df = pd.read_csv("Data_for_Generating_AI/LabData.csv",sep=";").ffill()
df
✔️ 876 ms (2024-11-13T17:08:51/2024-11-13T17:08:52)
Out[1]:
| Dataset | Experiment | SLR | Hs*Omega | WR | |
|---|---|---|---|---|---|
| 0 | Atkinson (smallest scale) | A1 | 0.050 | 0.0417 | -0.13760 |
| 1 | Atkinson (smallest scale) | A2 | 0.035 | 0.0616 | 0.13600 |
| 2 | Atkinson (smallest scale) | A3 | 0.035 | 0.0616 | 0.05220 |
| 3 | Atkinson (smallest scale) | E1 | 0.065 | 0.3523 | 0.29160 |
| 4 | Atkinson (smallest scale) | E2 | 0.065 | 0.3250 | 0.50245 |
| 5 | Atkinson (smallest scale) | E3 | 0.065 | 0.3250 | 0.48090 |
| 6 | Atkinson (smallest scale) | E4 | -0.065 | 0.3250 | -0.02170 |
| 7 | Atkinson (smallest scale) | E5 | 0.050 | 0.5424 | 0.40295 |
| 8 | Atkinson (smallest scale) | E6 | 0.065 | 0.3523 | 0.41485 |
| 9 | Beuzen (slightly larger scale) | E11 | 0.015 | 0.4500 | 0.12420 |
| 10 | Beuzen (slightly larger scale) | E12 | 0.015 | 0.4500 | 0.08560 |
| 11 | Beuzen (slightly larger scale) | E13 | 0.015 | 0.4500 | 0.12640 |
| 12 | Beuzen (slightly larger scale) | E14 | 0.015 | 0.4500 | 0.07170 |
| 13 | Beuzen (slightly larger scale) | E15 | 0.015 | 0.4500 | 0.16690 |
| 14 | Beuzen (slightly larger scale) | E2 | 0.075 | 0.4500 | 0.64690 |
| 15 | Bayle (large scale) | E1 | 0.100 | 2.7040 | 1.06050 |
| 16 | Bayle (large scale) | E2 | 0.100 | 2.7040 | 0.95010 |
| 17 | Bayle (large scale) | E3 | 0.100 | 2.7040 | 0.90010 |
| 18 | Bayle (large scale) | E4 | 0.100 | 2.7040 | 1.67000 |
In [2]:
x = df.SLR
y = df['Hs*Omega']
z = df.WR
px.scatter_3d(df, "SLR", "Hs*Omega", "WR", color="Dataset")
✔️ 626 ms (2024-11-13T17:08:52/2024-11-13T17:08:53)
In [3]:
def func(xy, a, b, c, d, e, f):
x, y = xy
return a + b*x + c*y + d*x**2 + e*y**2 + f*x*y
popt, pcov = curve_fit(func, (x, y), z)
X, Y = np.meshgrid(np.linspace(x.min(), x.max(), 10), np.linspace(y.min(), y.max(), 10))
Z = func((X, Y), *popt)
✔️ 4.84 ms (2024-11-13T17:08:53/2024-11-13T17:08:53)
In [4]:
dfs = []
for i in range(len(X)):
dfs.append(pd.DataFrame({"SLR": X[i], "Hs*Omega": Y[i], "WR": Z[i], "Dataset":"generated"}))
gen_df = pd.concat(dfs)
gen_df = gen_df[gen_df["WR"] > 0]
px.scatter_3d(pd.concat((df, gen_df)), x="SLR", y="Hs*Omega", z="WR", color="Dataset", opacity=.5)
✔️ 43.1 ms (2024-11-13T17:08:53/2024-11-13T17:08:53)
In [5]:
gen_df.to_csv("generated.csv", index=False)
✔️ 5.26 ms (2024-11-13T17:08:53/2024-11-13T17:08:53)